package com.sunfeng.chap1;

import java.nio.ByteBuffer;

/**
 * capacity 容量
 * limit 限值
 * position 位置
 * mark 标记
 * 0<=mark<=position<=limit<=capacity
 */
public class Test1_1 {
    public static void main(String[] args) {
        //1、缓冲区的capacity不能为负数，缓冲的limit不能为负数，缓冲区的position不能为负数、
        //   ByteBuffer.allocate(-1); //IllegalArgumentException
        ByteBuffer byteBuffer = ByteBuffer.allocate(5);
        // byteBuffer.limit(-1); //IllegalArgumentException
        // byteBuffer.position(-1);//IllegalArgumentException
        // 2、position不能大于limit
      /*  byteBuffer.limit(2);
        byteBuffer.position(3);//IllegalArgumentException*/

        // 3、limit不能大于capacity

        //  byteBuffer.limit(12);
        // 4、如果定义了mark则将在 limit或者position小于mark时，该mark被丢弃
        byteBuffer.position(4).mark();
        // 在这里mark 被设置为-1 调用rest()方法时会抛出异常
       // byteBuffer.position(3);
        byteBuffer.reset();
        System.out.println(byteBuffer.mark());
        System.out.println("ByteBuffer的位置" + byteBuffer.position());
        // 5、如果未定义mark,调用reset方法时会抛出异常
        // 6、如果position大于新limit，则position的值就是limit的值。
        // 7.如果limit和position的值一样的话，在指定position写入数据是会出异常

    }
}
